Node.jsでAuth0のテナント設定のインポート・エクスポートを実行する
こんにちは、CX事業本部のうらわです。
Auth0ではテナント設定をCLIでインポート・エクスポートすることができます。
本記事ではCLIではなく、JavaScriptで書いたインポート・エクスポートのスクリプトをNode.jsで実行する例をご紹介します。
前提
$ sw_vers ProductName: Mac OS X ProductVersion: 10.15.6 BuildVersion: 19G2021 $ node -v v14.15.4 $ npm -v 6.14.10 $ yarn -v 1.22.10
準備
作業用ディレクトリを作成し、auth0-deploy-cli
をインストールします。Auth0のドメイン名、Client ID、Client Secretは環境変数で読み込むのでdotenv-cli
もインストールします。
mkdir auth0-import-export cd auth0-import-export npm init -y yarn add -D auth0-deploy-cli dotenv-cli
auth0-deploy-cli
のGitHubリポジトリのREADME.mdを参考にインポート・エクスポートを実行するスクリプトを作成します。実行時にコマンドライン引数を受け取ってインポート・エクスポートを分岐させます。
const a0deploy = require("auth0-deploy-cli"); const config = { AUTH0_DOMAIN: process.env.AUTH0_DOMAIN, AUTH0_CLIENT_SECRET: process.env.AUTH0_CLIENT_SECRET, AUTH0_CLIENT_ID: process.env.AUTH0_CLIENT_ID, AUTH0_EXPORT_IDENTIFIERS: false, AUTH0_ALLOW_DELETE: false, AUTH0_API_MAX_RETRIES: 10, }; const action = process.argv[2]; if (action === "import") { a0deploy .deploy({ input_file: "./tenants", config: config, }) .then(() => console.log("yey deploy was successful")) .catch((err) => console.log(`Oh no, something went wrong. Error: ${err}`)); } else if (action === "export") { a0deploy .dump({ output_folder: "./tenants", config: config, }) .then(() => console.log("yey export was successful")) .catch((err) => console.log(`Oh no, something went wrong. Error: ${err}`)); } else { console.log("Invalid argument."); }
Auth0の設定
Auth0の対象テナントにアクセスし、左サイドバーメニューの Extensions を選択します。検索フォームで「deploy」と検索して表示される「Auth0 Deploy CLI」をインストールします。
インストールすると、Applications に「auth0-deploy-cli-extensions」が追加されます。こちらのアプリの Client ID と Client Secret を使用します。
.env
ファイルを作成し、Auth0で控えた情報を記載します。こちらのファイルは.gitignore
に記載し、GitHub等のgitリポジトリにプッシュしないようにします。
AUTH0_DOMAIN=hogehoge.jp.auth0.com AUTH0_CLIENT_ID=xxxxxxxxxxxxxxxxxxxxxxxxxxx AUTH0_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
実行
package.json
に以下を追記します。
"scripts": { "export": "dotenv -e .env node import-export.js export", "import": "dotenv -e .env node import-export.js import" },
yarn export
でテナント設定がtenants
ディレクトリ内にエクスポートされます。
yarn import
でインポートを実行します。
まとめ
Auth0のテナント設定のインポート・エクスポートはCLIでも実行できますが、自分でスクリプトを書いて実行することも可能です。インポート・エクスポート時に何らかの追加処理を加えたい等の要件がある場合は有効かと思います。